library("syuzhet")
## Warning: package 'syuzhet' was built under R version 4.2.2
library("wordcloud")
## Warning: package 'wordcloud' was built under R version 4.2.2
## Loading required package: RColorBrewer
library("plotly")
## Warning: package 'plotly' was built under R version 4.2.2
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library("tm")
## Warning: package 'tm' was built under R version 4.2.2
## Loading required package: NLP
## 
## Attaching package: 'NLP'
## The following object is masked from 'package:ggplot2':
## 
##     annotate
library("tidytext")
## Warning: package 'tidytext' was built under R version 4.2.2
library("dplyr")
## Warning: package 'dplyr' was built under R version 4.2.2
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library("RColorBrewer")
library("ggplot2")
library("magrittr")
library("stringr")
## Warning: package 'stringr' was built under R version 4.2.2
library("twitteR")
## Warning: package 'twitteR' was built under R version 4.2.2
## 
## Attaching package: 'twitteR'
## The following objects are masked from 'package:dplyr':
## 
##     id, location
CONSUMER_SECRET <- "c4lW91jDaRUgzFAvOr0YleNYVEm17ZTnEHnMsvlDcjKSJnBJXg"
CONSUMER_KEY <- "pgjt5UWX2uzuK6qRwHowEPPXq"
ACCESS_SECRET <- "txachtOgZ7L0dyj9vAswZkfGjtJMfU4fVvRdAyEo3jNg0"
ACCESS_TOKEN <- "1594899110103986176-QoH3VZuNGyLd8RBuY6cnFR4lN6obA4"

setup_twitter_oauth(consumer_secret = CONSUMER_SECRET,
                    consumer_key = CONSUMER_KEY,
                    access_secret = ACCESS_SECRET,
                    access_token = ACCESS_TOKEN)
## [1] "Using direct authentication"

#get 10000 tweets excluding retweets.

trendTweets <- searchTwitter("Ukraine", n = 10000,lang = "en",
                             since = "2022-11-24",
                             until = "2022-12-30",retryOnRateLimit=120)

Data frame

ukraineDF <- twListToDF(trendTweets)

#save and load

save(ukraineDF, file = "ukraineDF.Rdata")
load(file = "ukraineDF.Rdata")

saple_data <- sapply(ukraineDF, function(x) sum(is.na(x)))

#Subsetting dplyr

ukraine_tweets <- ukraineDF %>%
  select(screenName,text,created, isRetweet) %>% filter(isRetweet == FALSE)
save(ukraine_tweets, file = "ukraine_tweetsF.Rdata")
load(file = "ukraine_tweetsF.Rdata")

#Arrange data

ukraine_tweets %>%  
  group_by(1) %>%  
  summarise(max = max(created), min = min(created))
ukrainedata <- ukraine_tweets %>%  mutate(Created_At_Round = created %>% 
                round(units = 'hours') %>% as.POSIXct())

slava <- ukraine_tweets %>% pull(created) %>% min()

ukrani <- ukraine_tweets %>% pull(created) %>% max()

#Plotting tweets using ggplot and library

Slavaplot <- ggplot(ukrainedata, aes(x = Created_At_Round)) +
  geom_histogram(aes(fill = ..count..)) +
  theme(legend.position = "right") +
  xlab("Time") + ylab("Number of tweets") + 
  scale_fill_gradient(low = "grey", high = "blue")

Slavaplot %>% ggplotly()
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## ℹ The deprecated feature was likely used in the ggplot2 package.
##   Please report the issue at <]8;;https://github.com/tidyverse/ggplot2/issueshttps://github.com/tidyverse/ggplot2/issues]8;;>.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

#Retweets

ukraineretweets <- ukraineDF %>%
  select(screenName,text,created, isRetweet) %>% filter(isRetweet == TRUE)

#Arranging the data

ukraineretweets %>%  
  group_by(1) %>%  
  summarise(max = max(created), min = min(created))
ukraineretweets2 <- ukraineretweets %>%  mutate(Created_At_Round = 
                        created %>% round(units = 'hours') %>% as.POSIXct())

slava <- ukraineretweets %>% pull(created) %>% min()

ukrani <- ukraineretweets %>% pull(created) %>% max()

#Plotting the retweets using gglplot and library

zelensky <- ggplot(ukraineretweets2, aes(x = Created_At_Round)) +
  geom_histogram(aes(fill = ..count..)) +
  theme(legend.position = "right") +
  xlab("Time") + ylab("Number of tweets") + 
  scale_fill_gradient(low = "yellow", high = "blue")

zelensky %>% ggplotly()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.